package entity

import (
	"utilsx/constant"
)

type Response[T any] struct {
	Code    int    `json:"code"`    // 错误码
	Success bool   `json:"success"` // 是否成功
	Message string `json:"message"` // 信息描述
	Data    T      `json:"data"`    // 返回数据
}

// SetMsg 自定义响应信息
func (res *Response[T]) SetMsg(message string) *Response[T] {
	res.Message = message
	return res
}

// SetData  追加响应数据
func (res *Response[T]) SetData(data T) *Response[T] {
	res.Data = data
	return res
}
func (res *Response[T]) SetStatusCode(statusCode int) *Response[T] {
	res.Code = statusCode
	return res
}

// ToString 返回 JSON 格式的错误详情
func (res *Response[T]) ToString() string {
	raw, _ := constant.Json.Marshal(res)
	return string(raw)
}

func GetResultInfoAny(code int) *Response[any] {
	if code < 300 {
		return &Response[any]{
			Code:    code,
			Success: true,
			Data:    nil,
		}

	}
	return &Response[any]{
		Code:    code,
		Success: false,
		Data:    nil,
	}
}
